﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVCSampleApp.Models;

namespace MVCSampleApp.Controllers
{
  public class HelperMethodsController : Controller
  {
    //
    // GET: /HelperMethods/

    public ActionResult Index()
    {
      return View();
    }

    public ActionResult SimpleHelper()
    {
      return View();
    }

    public ActionResult HelperWithMenu()
    {
      var menu = new Menu
      {
        Id = 1,
        Text = "Schweinsbraten mit Knödel und Sauerkraut",
        Price = 6.9,
        Date = new DateTime(2012, 10, 5),
        Category = "Main"
      };
      return View(menu);
    }

    public ActionResult StronglyTypedMenu()
    {
      var menu = new Menu
      {
        Id = 1,
        Text = "Schweinsbraten mit Knödel und Sauerkraut",
        Price = 6.9,
        Category = "Main"
      };
      return View(menu);
    }

    public ActionResult Editor()
    {
      var menu = new Menu
      {
        Id = 1,
        Text = "Schweinsbraten mit Knödel und Sauerkraut",
        Price = 6.9,
        Date = new DateTime(2012, 10, 5),
        Category = "Main"
      };
      return View(menu);
    }

    public ActionResult Display()
    {
      var menu = new Menu
      {
        Id = 1,
        Text = "Schweinsbraten mit Knödel und Sauerkraut",
        Price = 6.9,
        Date = new DateTime(2012, 10, 5),
        Category = "Main"
      };
      return View(menu);
    }


    public ActionResult HelperList()
    {
      var cars = new Dictionary<int, string>();
      cars.Add(1, "Red Bull Racing");
      cars.Add(2, "McLaren");
      cars.Add(3, "Lotus");
      cars.Add(4, "Ferrari");

      return View(cars.ToSelectListItems(4));
    }

    public ActionResult EditorList()
    {
      var menus = new List<Menu>
      {
        new Menu { Id=1, Text="Schweinsbraten mit Knödel und Sauerkraut", Price=6.9, Category="Main" },
        new Menu { Id=2, Text="Erdäpfelgulasch mit Tofu und Gebäck", Price=6.9, Category="Vegetarian" },
        new Menu { Id=3, Text="Tiroler Bauerngröst'l mit Spiegelei und Krautsalat", Price=6.9, Category="Main" }
      };
      return View(menus);
    }


    public ActionResult HelperWithModels()
    {
      var menus = new List<Menu>
      {
        new Menu { Id=1, Text="Schweinsbraten mit Knödel und Sauerkraut", Price=6.9, Category="Main" },
        new Menu { Id=2, Text="Erdäpfelgulasch mit Tofu und Gebäck", Price=6.9, Category="Vegetarian" },
        new Menu { Id=3, Text="Tiroler Bauerngröst'l mit Spiegelei und Krautsalat", Price=6.9, Category="Main" }
      };
      return View(menus);
    }



  }

  public static class SelectListItemsExtensions
  {
    public static IEnumerable<SelectListItem> ToSelectListItems(this IDictionary<int, string> dict, int selectedId)
    {
      return dict.Select(item =>
        new SelectListItem
        {
          Selected = item.Key == selectedId,
          Text = item.Value,
          Value = item.Key.ToString()
        });
    }
  }
}
